Apparatus and methods for printing a print job over a network

ABSTRACT

The present invention relates to methods and apparatus for printing print jobs over a communications network. In particular, the present invention enables a user to obtain print jobs at a location which may be unspecified, and which may be remote from the source of the print job. A spooling server is used to store a print job received via the network from a print job source. A printer polling device, which may be used at a location remote from the client device, is capable of polling the spooling server via the network to identify whether any print jobs associated with the printer polling device are available for printing at a printer currently associated with the polling device. The spooling server need not initiate contact with the printer through a firewall, since it is polled by the printer polling device. Thus, network security is maintained.

REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.09/688,475, filed 16 Oct. 2000, now U.S. Pat. No. 7,095,518.

BACKGROUND

The present invention relates to methods and apparatus for printingprint jobs over a communications network. In particular, the presentinvention enables a user to obtain print jobs at a location which may beunspecified, and which may be remote from the source of the print job. Aspooling server is used to store a print job received via the networkfrom a print job source. A printer polling device, which may be used ata location remote from the client device, is capable of polling thespooling server via the network to identify whether any print jobsassociated with the printer polling device are available for printing atone or more printers associated with the polling device.

As computer networks become more complex, the rate at which networkconfigurations change continues to increase. Also, the increasinglyfrantic pace of the typical business traveler who juggles documents onmultiple computers and is required to configure a traveling laptopcomputer to integrate into various changing networks makes itincreasingly difficult to reliably and efficiently print even a simpledocument.

For example, a business traveler in a hotel may wish to print to aprinter that the hotel provides for such purposes. Under the currentstate of the art, the user must first obtain the network ID of theprinter along with some information about the type of printer. Then, aprint driver for that specific printer must be installed on the user'scomputer, and the computer must be configured to connect to the printer.This may additionally involve configuring the computer to connect to thehost network.

Further, in many cases, it is desirable to be able to prepare a documentfor printing prior to having the information concerning the destinationprinter. For example, it may be desirable to print a document from amobile laptop connected via a wireless data connection while in transitto a meeting at a site the user has never visited before. Obtaining theinformation and configuring the laptop to be able to print to theprinter becomes logistically infeasible.

These problems have typically been solved in the past by one of thefollowing methods:

-   1. The document is e-mailed or otherwise transferred over a network    to a computer already configured to print to the desired printer;-   2. A portable computer is connected directly to the printer via a    cable or infra-red, bypassing many of the difficulties of    configuring the computer to print to a network computer;-   3. A portable printer is transported to the desired location; or-   4. The document is faxed to a fax machine.

Printing methods relating to network and distributed printing are knownin the prior art. Such systems require either a private network orforeknowledge of the destination of a print job. These prior art methodscomprise what is typically referred to as “push” technology (i.e.,technology in which a print job is directed to a specific knowndestination or printer).

In addition to the need for efficiency and ease of use is the need forsecurity when sending, storing, or printing print jobs. Early in thelife of the Internet, the need for securing an organization's localnetwork from tampering, stealing, or vandalism by outsiders became veryobvious. A type of gateway called a firewall was developed to meet thisneed. The firewall is designed to be a single, well-controlled accesspoint between the outside, global, or wide-area network and the inside,local-area network. By carefully restricting the types of networktraffic and the destinations where that traffic can flow, the firewallcan provide effective protection.

Specific “holes” in the firewall are created for each type of trafficthat is allowed through the gateway in each direction. Mostorganizations, for example, allow e-mail traffic in and out from theire-mail server, as well as web page client access from inside thefirewall to servers located outside of it.

Many types of access between machines commonly used on a local networkare normally prevented from going through the firewall. Specifically,file sharing, remote log-in, printing, and various othernetwork-administration types of protocols are typically not allowed tobe transported outside the firewall.

Another aspect of the firewall is that it is almost alwaysadministratively controlled by a centralized authority for theorganization that owns the local area network—commonly the managementinformation services (MIS) department of a company. Normal usersgenerally have to make special requests that are approved at the upperlevels of management to get configuration changes in the firewall. Inthe interest of maintaining security, these changes are often limited tospecific point-to-point exceptions or “holes” in the firewall.

It is desirable by many users to be able to print from a machine on onelocal area network to a printer located on a different local areanetwork with the data being transferred over a global network (e.g., theInternet) outside of the firewall of both local networks.

The current state of the art has solutions for this problem. However,almost all of these solutions require the intervention of the firewalladministrator.

One example of a solution is the IPP—Internet Printing Protocol standardbeing promulgated by various vendors. This standard allows IPP-equippedprinters to receive print jobs from remote clients over the Internet.However, the installation and use of IPP requires that a specific IPPhole be opened in the firewall by the network administrator.

It would be advantageous to be able to provide methods and apparatusthat allow a user to print to a perhaps yet unknown destination printeror printer pool in a reliable, efficient and secure manner without thedisadvantages of the above-mentioned techniques.

It would be further advantageous to provide a printing system based on“pull” technology (i.e., technology which enables a print job to beprinted upon request, where the print file is only delivered in responseto the request). Such technology would enable a system that allows auser to print to a destination printer or printer pool that may belocated anywhere, in a reliable, efficient, and secure manner withoutthe disadvantages of the above-mentioned techniques.

It would be further advantageous to have a solution that allows secure,efficient and easy-to-configure inter-network printing through a gatewayfirewall without the intervention of the network administrator.

SUMMARY

This invention relates to methods and apparatus for printing print jobsover a communications network. In particular, this invention enables auser to obtain print jobs at a location which may be unspecified, andwhich may be remote from the source of the print job. A spooling serveris used to store a print job received via the network from a print jobsource. A printer polling device, which may be used at a location remotefrom the source of the print job, is capable of polling the spoolingserver via the network to identify whether any print jobs associatedwith the printer polling device are available for printing at one ormore printers associated with the polling device.

In an illustrative embodiment, a spooling server is provided which iscapable of receiving, storing and forwarding one or more print jobs overa network. The print job is forwarded over the network to the spoolingserver (e.g., from any suitable print job source). The spooling serverreceives the print job (e.g., at a receiver) and stores the print job inmemory. The spooling server receives a polling request over the networkfor a print job from a printer polling device. The spooling serverforwards the requested print job to the printer polling device (e.g.,via a transmitter).

The print job can originate from any suitable print job source, such asa client device with an associated print driver, a web browser, afacsimile machine, a scanner, a telephone, an Internet appliance, apersonal digital assistant, or the like. A print job can also originateon the spooling server itself or be obtained from another server. Theclient device may be a computer, a telephone, a personal digitalassistant, an Internet appliance, or the like.

The identified print job can be transmitted from the spooling server tothe printer polling device and printed at one or more printers coupledto the printer polling device. The printer may be located at a locationremote from said spooling server.

The printer polling device may periodically poll the spooling server toidentify a print job associated with the printer polling device.

The network may comprise at least one of a local area network, a widearea network, a global network, the Internet, and any other type ofnetwork. The network may consist of multiple interconnected networkshaving multiple gateways and other features as is well known in the art.

In an alternate embodiment, the printer polling device may be locatedwithin a gateway firewall and the spooling server may be located outsidethe gateway firewall. The print job may be forwarded to the spoolingserver such that reconfiguration of the gateway firewall is notrequired. For example, the print job may be forwarded to the spoolingserver as web-style traffic and received at the printer polling deviceas web-style traffic.

A print job source may be located at and in communication with a firstlocal area network for forwarding of the print job to the spoolingserver. The printer polling device may be located at and incommunication with a second local area network. The spooling server maybe located outside of the first and second local area networks. Theprint job source may communicate with the spooling server via a firstgateway firewall which controls access to the first local area networkand the printer polling device may communicate with the spooling servervia a second gateway firewall which controls access to the second localarea network.

The spooling server may store multiple print jobs in at least onespooling queue.

The print job may be encrypted at the print job source and decrypted atthe printer polling device.

The print job may comprise a document provided by a content provider.The content provider may be one of a newspaper, a magazine, aperiodical, a document provider, a graphic arts provider, a notificationservice, an Internet content provider, a merchant, a financialinstitution, a government agency, a shipping company, or the like.

In a preferred embodiment, a fee may be charged for access to thespooling server. The print job may be provided by the content provideron a subscription basis. A single print job may be provided by thecontent provider for printing by multiple users.

In a further embodiment, each print job may be stored on the spoolingserver according to a personal identification number (PIN). The spoolingserver may communicate to the printer polling device a list of printjobs associated with the PIN which are stored at the spooling server.The selection of a print job from the list may be provided for (e.g.,via a user interface).

A plurality of print jobs may be stored on the spooling server accordingto the PIN. The PIN may be provided to the spooling server via one of auser interface associated with the printer polling device, a telephone,a computer, an Internet appliance, a facsimile machine, a scanner, apersonal digital assistant device, a dedicated terminal, or the like.The list of available print jobs may be displayed on one of a userinterface associated with the printer polling device, a telephone, acomputer, an Internet appliance, a facsimile machine, a scanner, apersonal digital assistant device, a dedicated terminal, or the like.Selection of an available print job may be made via a user interfaceassociated with the printer polling device, a telephone, a computer, anInternet appliance, a facsimile machine, a scanner, a personal digitalassistant device, a dedicated terminal, or the like.

In a further embodiment, the print job may be provided to the spoolingserver without a pre-determined print destination. Alternatively, adesired print location for the print job may be designated at the printjob source. The designated print location may be communicated to thespooling server with the print job. The print job may be printed at thedesired print location when the printer polling device at the desiredprint location polls the spooling server and identifies the print job.

Further, a substantially specific time for printing a print job may bedesignated such that the print job is only available for printing fromthe spooling server at the designated substantially specific time.

In addition, a lifetime of the print job may be designated, wherein saidprint job will be stored on the spooling server only for the designatedlifetime.

A number of printings of the print job may be designated, wherein theprint job can only be printed the designated number of times.

A list of recipients authorized to retrieve a print job may bedesignated, wherein the print job may only be printed by the designatedrecipients.

The print job may be one of a negotiable instrument, a stamp, a coupon,a certificate, a check, a unit of currency, a token, a receipt, or thelike.

In a preferred embodiment, the printer polling device is capable ofcommunicating printer status to the spooling server. The printer statusmay comprise at least one of a printer ready indication, an on-lineindication, toner level information, paper supply information, errorinformation, or other appropriate status information.

A printer operator can be notified when the printer status indicatesthat a printer requires attention. The operator can also be providedwith vendor contact information to facilitate obtaining printer suppliesor service. Automatic on-line ordering of printer supplies as requiredby printer status can be provided (e.g., by the spooling severcontacting predetermined preferred vendors).

The print job may include at least one of a document, a poster, animage, a coupon, a ticket, a certificate, a check, a list, a schedule, aperiodical, a unit of currency, a negotiable instrument, postage, a billof lading, a lottery or gaming ticket, a token, food stamps, a license,a permit, a pass, a passport, a ballot, a citation, identification, acopy-protection key, a proof-of-purchase, a warranty, a receipt, atranscript, a library card, or any other printable subject matter.

In an alternate embodiment, an agent program provides a directory ofdocuments to the spooling server. The agent program enables a clientdevice associated with the print job source to poll the spooling serverto determine whether the spooling server requires a document identifiedin the directory to complete a print job. If so, the document can beuploaded from the client device to the spooling server.

The directory can be communicated to the printer polling device andpresented at the printer polling device. Selection of a print job fromthe directory can be made (e.g., via a user interface).

The directory may be presented via a visual presentation or an audiopresentation. The client device may periodically poll the spoolingserver to determine whether the spooling server requires a documentidentified in the directory to complete a print job.

Communications with the spooling server may be enabled via at least oneof a telephone, a personal digital assistant device, a computer, anInternet appliance, a web browser, a dedicated terminal, or the like.The communications with the spooling server may be via an audiointerface or a visual interface.

A communication device for providing status of the print job stored onthe spooling server may be provided. The status of the print job maycomprise at least one of filename, file size, author, creation date,print job lifetime, image, title, contents, personal identificationnumber, recipient, job number, or reference number. The communicationdevice may be a telephone, a computer, an Internet appliance, a personaldigital assistant device, a dedicated terminal, or any other suitablewireless or wired communication device.

The print job source may be one of a computer, a personal digitalassistant device, an Internet appliance, a facsimile machine, a scanner,a telephone, a dedicated terminal, or other suitable source.

The printer polling device may be capable of polling multiple spoolingservers.

The spooling server may be capable of communicating with other serversand receiving a print job from at least one of the other servers.

BRIEF DESCRIPTION OF THE DRAWINGS

Features of the present invention can be more clearly understood fromthe following detailed description considered in conjunction with thefollowing drawings, in which the same reference numerals denote the sameelements throughout, and in which:

FIG. 1 is a block diagram of an implementation of the present invention;

FIG. 2 is a flow diagram showing an example of an encryption processwhich can be implemented in accordance with the invention;

FIG. 3 shows a representation of a printer polling device;

FIG. 4 is a block diagram of an alternate embodiment of the invention;

FIG. 5 is a flow diagram of an authentication procedure which can beimplemented in accordance with the invention;

FIG. 6 shows an example of communications which take place betweenvarious components of the invention;

FIG. 7 is a flow chart illustrating an example print job reformattingroutine;

FIG. 8 is a block diagram of an embodiment of a printer polling device;

FIG. 9 is a block diagram of an embodiment of a spooling server;

FIG. 10 is a block diagram of an embodiment of a print driver; and

FIG. 11 is a block diagram of an embodiment of an agent program.

DETAILED DESCRIPTION

The present invention enables print jobs to be sent to a spooling serverfor storage. The print jobs are subsequently delivered to one or moreprinters, on request, via a printer polling device. The printer pollingdevice uses “pull” technology, which polls the spooling server so thatthe spooling server does not have to initiate a connection into aprinter. In this manner print jobs can be securely printed anywhere,either automatically or at the request of a user who is authorized bythe printer polling device and/or the spooling server. Since thespooling server need not initiate contact with any device, there is nopotential breach of firewall security in a local network environment.

In one embodiment, a portable printer polling device is provided toenable retrieval and printing of documents from any location havingInternet access and a printer. The spooling server functions as arepository that is accessible, e.g., via a global communication networksuch as the Internet, to authorized users at any time of day. Since theprinter polling device polls the spooling server in order to obtaindelivery of a print job, prior art push data flow techniques, whichcould compromise a local area network's security, are avoided. Moreover,compatibility with virtually all printers that may be connected to thenetwork is provided, so that a document can be printed anywhereregardless of a specific printer's requirements. Many other advantagesand features of the invention are set forth in the followingdescription.

A preferred embodiment of the invention is shown in FIG. 1. Printingservices are provided via a spooling server 50 which is capable ofreceiving and storing one or more print jobs from a print job source 10via a network 110. A printer polling device 100 is provided which iscapable of polling the spooling server 50 via the network 110 toidentify a print job associated with the printer polling device 100.Configuration problems are eliminated as each print job source 10 onlyneeds to be configured to know how to print to the spooling server 50.The spooling server 50 only needs to be configured to be able to printto the printer polling device 100.

The print job can originate from any suitable print job source 10. Asshown in FIG. 1, the print job source 10 may be a client device 12associated with print driver 14. The print driver 14 may receive theprint job from an originating application 15, which can be any programcapable of producing a printable document. The print job source 10 mayalso be a web browser, a facsimile machine, a scanner, a telephone, anInternet appliance, a personal digital assistant, or the like. A printjob can also originate on the spooling server 50 itself or be obtainedfrom another server. The client device 12 may be a computer, atelephone, a personal digital assistant, an Internet appliance, afacsimile machine, a scanner, or the like.

The identified print job can be transmitted from the spooling server 50to the printer polling device 100 and printed at a printer 120 coupledto the printer polling device 100. Printer 120 may be a single printeror a pool of one or more printers coupled via a print server.

The printer polling device 100 may periodically poll the spooling server50 to identify a print job associated with the printer polling device100. Security is achieved by the fact that the printer 120 is notpassively accepting any and all connections from the outside. Theprinter polling device 100 is initiating connections to a specific,trusted location, the spooling server 50.

The network 110 may comprise at least one of a local area network, awide area network, a global network, the Internet, and any other type ofnetwork. The network 110 may consist of multiple interconnected networkshaving multiple gateways and other features as is well known in the art.

In an alternate embodiment, the printer polling device 100 may belocated within a gateway firewall 70 and the spooling server may belocated outside the gateway firewall 70. In addition, the print jobsource 10 may be located within a gateway firewall 30 and the spoolingserver may be located outside the gateway firewall 30.

The print job may be forwarded to and from the spooling server 50 suchthat reconfiguration of gateway firewalls 30 and 70 is not required. Forexample, the print job may be forwarded to the spooling server 50 asweb-style traffic and received at the printer polling device 100 asweb-style traffic. For example, a print driver 14 may accept printrequests from application 15 like any other print driver, but instead ofrouting the print requests onto the network 110 using normal printerpackets and well-known-ports, it routes the output of the print job tothe spooling server 50 located outside of the firewall 30 using packetsand ports that resemble web traffic.

Similarly, using web types of packets and ports, the printer pollingdevice 100 is capable of polling the spooling server 50 and retrievingany print jobs that have been stored for the printer 120.

As shown in FIG. 1, the print job source 10 may be located at and incommunication with a first local area network 20 and the printer pollingdevice 100 may be located at and in communication with a second localarea network 80. The spooling server 50 may be located outside of thefirst and second local area networks 20, 80. The print job source 10 maycommunicate with the spooling server 50 via a first gateway firewall 30which controls access to the first local area network 20 and the printerpolling device 100 may communicate with the spooling server 50 via asecond gateway firewall 70 which controls access to the second localarea network 80.

The printer polling device 100 may be: (i) a stand-alone deviceconnected to the printer 120 via a standard printer port, (ii)integrated into the firmware of the printer 120, (iii) integrated intothe software of a network print server, or (iv) of any other suitableconfiguration. The printer polling function may also be integrated intothe software on a stand-alone print server such as those manufactured byElectronics for Imaging, Inc. (Foster City, Calif.) under the trademarksFiery® and EDOX®.

In a preferred embodiment, a fee may be charged to access the spoolingserver 50. The fee can be based on one of print job size in bytes, printjob size in number of pages, print job type, time for printing, time forstorage, monthly fee, per use fee, lifetime membership, monthlymembership, use of color, use of black and white, page size, location,convenience, number of images, print quality, image quality, or othersuitable factors. The fee may be charged for providing a print job tothe spooling server 50 and/or retrieving a print job from the spoolingserver 50. The fee can be paid via a client device 12 associated withthe print job source 10, the printer polling device 100, or any othersuitable device capable of communicating with the spooling server, suchas a smart card, a telephone, a personal digital assistant, or the like.

The spooling server 50 may store the one or more print job(s) in atleast one spooling queue 52. The spooling server 50 may be maintained bya trusted party on the outside of the firewalls 30, 70. Alternatively,the spooling server 50 may be owned and maintained by the organizationsdesiring to utilize inter-network printing.

Since the communications amongst the print job source 10, the spoolingserver 50, and the printer polling device 100 may travel across publicnetworks, it is very desirable to protect any proprietary orconfidential information that may be embodied in the print jobs.

In a preferred embodiment, the print job may be encrypted at the printjob source 10 and decrypted at the printer polling device 100. Forexample, the print job can be encrypted on the client device 12 suchthat it can only be printed by a person with the correct decryption key.In addition, printing of the document can be delayed until the key isphysically entered at the printer polling device 100 (e.g., therecipient is physically present at the printer 120).

A flow diagram of an example of an encryption process used between theprint job source 10, the spooling server 50 and the printer pollingdevice 100 is shown in FIG. 2. The print job 11 is protected byencrypting the print job (indicated at 501) at the print job source 10(e.g., on the print driver 14 or an agent program on the originatingclient device 12 of FIG. 1) and decrypting it at the spooling server 50.The encryption algorithm may be the IDEA algorithm. Other suitableencryption algorithms which can be utilized are DES (the Data EncryptionStandard), or triple-DES (DES applied to the data three times with threedifferent keys). Other encryption algorithms suitable for commercialconfidential information are numerous and well known in the art of dataencryption.

The key 500 used for encryption 501 may be derived from an accountnumber 510, a user's secret PIN (personal identification number) 520,and/or optionally some additional encryption key digits 530 supplied bythe user. Simply concatenating the bits together from these sourcesprovides a moderately secure key 500. Optionally, additional securitymay be achieved by using a more sophisticated hashing function.

The key 500 would be known only to the user and to the secure, trusted,spooling web server 50. The encrypted print job is sent to the spoolingserver 50 where it is decrypted (601) to facilitate reformatting 602 forthe destination printer once it is known. The reformatted print job datais re-encrypted 603 using the same or similar key 500′ derived in thesame manner as key 500 at the print job source 10. The encrypted printjob is then transmitted from the spooling server 50 to the printerpolling device 100. Once at the printer polling device 100, the printjob is decrypted 701 using a key 500″ derived from the PIN 520, accountnumber 510, and/or optional encryption key extension digits 530. Thedecrypted print job can then be forwarded to the printer 120 forprinting.

The print job 11 may comprise a document provided by a content provider.The content provider may be one of a newspaper, a magazine, aperiodical, a document provider, a graphic arts provider, a notificationservice, an Internet content provider, a merchant, a financialinstitution, a government agency, a shipping company, or the like. Forexample, instead of physically delivering the daily sports page, it issimply printed on a customer's home printer.

The print job 11 may be provided by the content provider on asubscription basis. A single print job may be provided by the contentprovider for printing by multiple users.

The printer polling device 100 may comprise a user interface, aconnection to the network 110, and a connection to the printer 120. FIG.3 shows an embodiment of a user interface 103 for the printer pollingdevice 100 having a display 101 and a keypad 102. The keypad 102 shownin FIG. 3 may also comprise an alphanumeric keypad to allow for entry ofboth letters and numbers. The user interface may optionally include aspeaker and a microphone for audio output and input, and may alsoinclude a card reader for reading a magnetic strip on a credit or debitcard, automated teller machine (ATM) card, smartcard, prepaid printcard, or the like.

In a further embodiment as shown in FIG. 4, each print job may be storedon the spooling server 50 according to a personal identification number(PIN) 400. As an example, FIG. 4 shows the PIN 400 entered at a clientdevice 12. The PIN 400 is forwarded to the spooling server 50 by theprint driver 14 along with the print job. The spooling server 50 maycommunicate to the printer polling device 100 a list of print jobsassociated with the PIN 400 which are stored at the spooling server 50.The selection of a print job from the list may be provided for (e.g.,via a user interface). For example, a small terminal may be provided ateach printer polling device 100 to allow a user to interact with thespooling server 50 and request that the user's print jobs be sent to theprinter 120 at the user's location. The user may identify himself orherself at the printer polling device 100 with their PIN 400, and thespooling server 50 can then match that PIN 400 with print jobspreviously submitted using that same PIN 400.

A plurality of print jobs may be stored on the spooling server 50according to the PIN 400 (e.g., in spooling queue 52). For example, adirectory may be created for each user, and thus each PIN, registeredwith the spooling server 50. Each print job may additionally be assigneda unique job number at the time it is first received at the spoolingserver 50. Thereafter, the job number may be used to access the datafiles associated with that job unambiguously. Once a print job has beenselected to be printed to a destination printer 120, the job number forthe print job may be entered into a queue associated with thedestination printer 120. Data structures suitable for maintaining aqueue are well known in the art. In the preferred embodiment, the queue52 is maintained in a C++ class known as a CList provided by Microsoftin their C++ class library.

When the printer polling device 100 polls the spooling server 50, thespooling server 50 checks to see if the queue for that printer 120contains any print jobs. When the spooling server 50 finds a print jobwaiting to be printed, the data for that print job is retrieved from thefile system, reformatted in a form suitable for the identified printer120, and transmitted to the printer polling device 100.

The PIN 400 may be provided to the spooling server 50 via one of a userinterface associated with the printer polling device 100, a telephone, acomputer, an Internet appliance, a facsimile machine, a scanner, apersonal digital assistant device, a dedicated terminal, or the like.The list of available print jobs may be displayed on one of a userinterface associated with the printer polling device 100, a telephone, acomputer, an Internet appliance, a facsimile machine, a scanner, apersonal digital assistant device, a dedicated terminal, or the like.Selection of an available print job may be made via a user interfaceassociated with the printer polling device 100, a telephone, a computer,an Internet appliance, a facsimile machine, a scanner, a personaldigital assistant device, a dedicated terminal, or the like.

FIG. 5 illustrates an exemplary process of authentication of a userusing a PIN. When a user desires to access their account or documentsover a non-secure channel, first, the spooling server 50 needs to verifythat it is indeed talking to the actual user. The server generates arandom string of bits 350. These bits are sent to the printer pollingdevice 100 where authentication is to take place. The user's PIN 150 isused to generate an encryption key 152 for encrypting the bits(indicated at 155) and the result is returned to the spooling server 50.The spooling server 50 decrypts the string (indicated at 355) using anencryption key 362 generated from the PIN it knows (360) and compares itto the original random string (indicated at 365). If the decryptedstring 358 matches the original string 350, the spooling server 50accepts the user as authenticated. An account number (361, 151) mayoptionally be used (either alone or in connection with the PIN) togenerate the encryption keys 362, 152. Many other authenticationprotocols are well known in the art and may be substituted for theprotocol described above in connection with FIG. 5.

The printer polling device 100 may be a portable device. The printerpolling device 100 may be operably associated with a variety of printertypes.

In a further embodiment, the print job may be provided to the spoolingserver 50 without a pre-determined print destination. A user is able tointeract with the printer polling device 100 and communicate theidentification of the desired print destination for the user's print jobto the spooling server 50. The user need not know anything more aboutthe printer 120 than its location (which the user needs anyway to beable to retrieve the physical output pages).

Alternatively, a desired print location for the print job may bedesignated at the print job source 10. The designated print location maybe communicated to the spooling server 50 with the print job. The printjob may be printed at the desired print location when the printerpolling device 100 at the desired print location polls the spoolingserver 50 and identifies the print job.

Further, a substantially specific time for printing a print job may bedesignated such that the print job is only available for printing fromthe spooling server 50 at the designated substantially specific time.

In addition, a lifetime of the print job may be designated, wherein saidprint job will be stored on the spooling server 50 only for thedesignated lifetime.

A number of printings of the print job may be designated, wherein theprint job can only be printed from the spooling server 50 the designatednumber of times.

A list of recipients authorized to retrieve a print job may bedesignated, wherein the print job may only be printed by the designatedrecipients. For example, a document or series of documents may beprovided to the spooling server 50 which document or documents can bereceived by a designated group of recipients, such as a company's salesforce, newsgroup or other content subscribers, or other targetaudiences.

The print job may be one of a negotiable instrument, a stamp, a coupon,a certificate, a check, a unit of currency, a token, a receipt, or thelike. In such circumstances, it may be desirable that the designatednumber of printings is one.

The print job source 10 may be connected to the network 110 usingDynamic Host Configuration Protocol (DHCP protocol), or any othersuitable network configuration protocol. Similarly, the printer pollingdevice 100 may be connected to the network 110 using DHCP protocol, orany other suitable network configuration protocol.

DHCP is a protocol which allows nodes to be added to a TCP/IP networkdynamically without specific prior configuration of that node in thedomain controller's hosts database. Each node desiring to connectannounces itself to the DHCP server. The name of the node is sent to theDHCP server. The DHCP server then assigns the node a dynamic IP addressas well as communicating the IP addresses of other key network servicessuch as name servers, mailhosts, and gateways that are available. Oncesetup and enabled, this mechanism allows nodes to be added to thenetwork without the intervention of a network administrator.

Ease of installation and configuration is therefore achieved through theuse of DHCP by the fact that most local networks are configured to allownetwork devices to be added without the intervention of an administratorusing DHCP. In addition, most local networks allow web access throughtheir firewall (e.g., gateway firewalls 30 and 70). These two factorsallow both the print job source 10 and the printer polling device 100 toconnect and communicate to the spooling server 50 without theintervention of a network administrator. The user simply plugs in theprinter polling device 100 and it accesses the network and startspolling the spooling server 50.

The invention may also be implemented using a virtual private network(VPN). A VPN is a mechanism that allows network nodes not directlyconnected to a local private network to behave as if they are locallyconnected to the network by forwarding the data packets through sometype of public or intermediate network. For security, authentication ofthe node desiring to connect to the network is performed, as well asencryption of the contents of the forwarded packets. Various commercialproducts allow the setup and configuration of a VPN through variousconnectivity mechanisms such as dial-up ISP's, Cable Modems, and DSL onthe client node end. The local network that is being connected to willrequire a router or router/firewall that implements the VPN protocol toallow the VPN connection. A VPN is made up of two components: L2TP(Layer 2 tunneling protocol) and IPSEC (Internet Protocol Security).

In a preferred embodiment, the printer polling device 100 is capable ofcommunicating the status of the printer 120 to the spooling server 50.The printer status may comprise at least one of a printer readyindication, an on-line indication, toner level information, paper supplyinformation, error information, or other appropriate status information.

A printer operator can be notified when the printer status indicatesthat the printer 120 requires attention. The operator can also beprovided with vendor contact information to facilitate obtaining printersupplies or service. Automatic on-line ordering of printer supplies asrequired by printer status can be provided (e.g., by the spooling sever50 contacting predetermined preferred vendors).

The print job may include at least one of a document, a poster, animage, a coupon, a ticket, a certificate, a check, a list, a schedule, aperiodical, a unit of currency, a negotiable instrument, postage, a billof lading, a lottery or gaming ticket, a token, food stamps, a license,a permit, a pass, a passport, a ballot, a citation, identification, acopy-protection key, a proof-of-purchase, a warranty, a receipt, atranscript, a library card, or any other printable subject matter.

As illustrated in FIG. 6, the printer polling device 100 mayperiodically poll the spooling server 50. The interval of the pollingcan vary as desired and can be adjusted dynamically based upon suchfactors as traffic or requests for files. The polling request (query)210 is preferably encrypted. Because the query 210 is directed to aspecific spooling server 50, it is difficult for a third party to breachthe system's security. The query 210 asks the spooling server 50 if ithas a print job identified by the user (e.g., via a PIN or a jobnumber). Once the spooling server 50 has received a request 210 from theprinter polling device 100 for a print job that is stored at thespooling server 50, the spooling server 50 waits for the next query 210from the printer polling device 100. Then, instead of its normal answerto the query of “NACK” (negative acknowledge) 220, the spooling server50 answers “ACK” (acknowledge) 230 and transmits the print job to thedestination printer 120.

In an alternate embodiment as shown in FIG. 11, an agent program 200provides a directory of documents 204 to the spooling server 50. Theagent program 200 enables a client device 12 associated with the printjob source 10 to poll the spooling server 50 to determine whether thespooling server 50 requires a document 13 identified in the directory204 to complete a print job. If so, the document 13 can be uploaded fromthe client device 12 to the spooling server 50. The agent 200 enables auser at a printer 120 (or using any of the available interfaces to thespooling server 50) to initiate the printing of documents 13 that stillreside on a client device 12 (such as the user's computer) even thoughthe documents 13 have not been forwarded to the spooling server 50 asprint jobs.

The agent program 200 may be downloaded and installed on the clientdevice 12. The agent program 200 may be configured to make the contentsof some or all of the directories 204 on the client device 12 availableto the spooling server 50. Once installed and running, the agent program200 initiates a connection to the spooling server 50 in the same way theprinter polling device 100 does. The agent program may have a connectionthrough a firewall, for example.

The directory of documents 204 may include application files such as aMicrosoftWord.doc file, for example, or files that have been made into aprint job (Postscript or PDF file) by printing “to a file” from someapplication.

The directory 204 can be communicated to the printer polling device 100and presented at the printer polling device 100. Selection of a printjob 11 from the directory can be made (e.g., via a user interface).

For example, the spooling server 50 will list those documents 13 beingavailable from the agent program 200 whenever the user of that accountis interacting with the printer polling device 100, or any otherinterface provided for communication to the spooling server 50 asdescribed herein.

For example, the agent program 200 may periodically poll the spoolingserver 50 via polling interface 202. The interval of the polling canvary as desired and can be adjusted dynamically based upon such factorsas traffic or requests for files. The communications between the agentprogram 200 and the spooling server 50 occur substantially as describedin connection with FIG. 6 above. The polling request (query) 206 ispreferably encrypted. Because the query 206 is directed to a specificspooling server 50, it is difficult for a third party to breach thesystem's security. The query 206 asks the spooling server 50 if it wantsany files in the directory 204 (and may also update the directory 204).Once the spooling server 50 has received a request 207 from the printerpolling device 100 for a document that is listed in the directory 204,the spooling server 50 waits for the next query 206 from the agentprogram 200. Then, instead of its normal answer to the query of “NACK”(negative acknowledge), it answers “ACK” (acknowledge) followed bydocument information, such as the name of the document that is requestedby request 207.

The agent program 200, upon receiving an “ACK” and the requestinformation 207, opens the document 13 using the application it wascreated in and prints it to a temporary file 205 to create a print job11. This print job 11 is then transmitted to the spooling server 50 viatransmitter 203. The spooling server 50 uses its normal mechanism tothen transmit the print job 11 to the destination printer 120.

Alternatively, the spooling server 50 may send an “ACK” followed by thename of a subdirectory. In that case, the agent program 200 returns thecontents of that subdirectory. The spooling server 50 can then displaythose files to the user at the printer polling device 100 and allow oneof the files to be selected, or allow additional navigation of directory204 to take place.

The directory 204 may be presented via a visual presentation or an audiopresentation. The client device 12 may periodically poll the spoolingserver 50 to determine whether the spooling server 50 requires adocument from the directory 204 to complete a print job.

Communications with the spooling server 50 may be enabled via at leastone of a telephone, a personal digital assistant device, a computer, anInternet appliance, a web browser, a dedicated terminal, or the like.The communications with the spooling server 50 may be via an audiointerface or a visual interface.

A communication device for providing status of the print job stored onthe spooling server 50 may be provided. The status of the print job maycomprise at least one of filename, file size, author, creation date,print job lifetime, image, title, contents, personal identificationnumber, recipient, job number, or reference number. The communicationdevice may be a telephone, a computer, an Internet appliance, a personaldigital assistant device, a dedicated terminal, or any other suitablewireless or wired communication device.

The print job source 10 may be one of a computer, a personal digitalassistant device, an Internet appliance, a telephone, a facsimilemachine, a scanner, a dedicated terminal, or other suitable source.

The printer polling device 100 may be capable of polling multiplespooling servers.

The spooling server 50 may be capable of communicating with otherservers and receiving a print job from at least one of the otherservers.

The print jobs submitted from the print job source 10 to the spoolingserver 50 may be generated in a page description language known asPostscript. Alternate choices for a page description language are PDF,Latex, or other similar languages. The size of the paper, variousprinter capabilities, and printable area dimensions may be assumed froma lowest common denominator set of capabilities common to most of theintended target printers.

Once the destination printer 120 is known, the page description languagedata needs to be converted into a form that can be understood by thatprinter 120. This process is shown in FIG. 7. Once the print job 11 issent to the spooling server 50, a target printer 120 must be identifiedbefore the spooling server 50 can forward the print job 11 to beprinted. Target printer identification 801 can be provided with theprint job 11 from the print job source 10 or can be provided by theprinter polling device 100 as part of the polling query. The spoolingserver 50 retrieves printer specific information 805 for the targetprinter 120 from a printer database 803. Based on the printer specificinformation 805 (such as data type, page dimensions, color capabilities,margins, and other print characteristics) the spooling server 50 willmake printer specific adjustments 810 to the print job 11 at the pagedescription language level prior to rasterization.

On printers that can accept Postscript (or the PDL of choice) directly,no modification is necessary. For other, simpler printers, a lower levelbitmap form of the page is required to be sent to the printer. In thiscase, the page description language needs to be rasterized into a bitmapform. In addition, the bitmap data needs to be formatted into the formunderstood by the printer 120. A raster image processor 815 determinesthe target printer type from the printer specific information 805 andselects an appropriate data format from available formats 820, 821, 822,823. The raster image processor 815 places the print job 11 into aprinter specific data file 850 for delivery to the printer pollingdevice 100 to be printed at the target printer 120.

One common example of a data format used with simple printers is PCL(Printer Control Language), which is widely used in printers built byHewlett Packard. Other printers built by Epson, for example use Epson'sproprietary Epson-escape code sequences to format the bitmap data.

Alternatively, reformatting of the print job may take place at theprinter 120, at the printer polling device 100, or at any other suitabledevice.

FIG. 8 shows the components of an embodiment of a printer polling device100. As discussed above in connection with FIG. 3, the printer pollingdevice may optionally include a user interface 103 for enablingcommunications with the spooling server 50 (e.g., providing a PIN to thespooling server 50). A polling transmitter 105 is provided fortransmitting polling requests to the spooling server 50 via the network110 to identify a print job stored at the spooling server 50 (asdiscussed in connection with FIGS. 1 and 4 above). A print job receiver108 is provided for receiving the identified print job from the spoolingserver 50 via the network 110. Decryption 111 of an encrypted print jobmay optionally be provided for at the printer polling device 100. Aprinter interface 112 enables the printer polling device 100 to forwardthe print job to a printer 120 for printing.

FIG. 9 shows the components of an embodiment of a spooling server 50. Areceiver 51 is provided which is capable of receiving print jobs fromthe print job source 10 and receiving polling requests from the printerpolling device 100. The receiver 51 may comprise a print job receiver 58for receiving the print job and a polling receiver 59 for receiving thepolling request. When a print job is received by the receiver 51, thespooling server 50 stores the print job in memory 52, which may compriserandom access memory (RAM), magnetic or optical storage media, or anyother read/write memory device. As discussed herein, the print jobs maybe stored in memory 52 according to a PIN. Multiple print jobs may bestored under each PIN as shown at 53, 54, and 55. When the spoolingserver 50 receives a polling request for a specific print job from theprinter polling device 100 at the receiver 51, the spooling server 50will determine whether the requested print job is stored in memory 52,and if so, forward the requested print job to the printer polling device100 via transmitter 57. A processor 56 enables the spooling server tosearch for, retrieve, and/or reformat the print job for delivery to theprinter polling device 100.

FIG. 10 shows the components of an embodiment of a print driver 14. Aninterface 16 is provided for receiving a print job from a print jobsource 10. The print job source 10 is shown in FIG. 10 as a clientdevice 12, but can be any suitable print job source as discussed herein.The interface 16 receives a printable document 13 from the client device12. A transmitter 18 is provided for transmitting the print job 11 tothe spooling server 50 via the network 110. The spooling server 50receives polling requests from the printer polling device 100 andforwards one or more identified print jobs to the printer polling device100 in response to the polling requests. The print jobs can then beprinted at a printer 120 associated with the printer polling device 100.As discussed in greater detail elsewhere herein, the printer pollingdevice 100 does not have to identify specific print jobs to the spoolingserver 50. Instead, it can simply request a list of all print jobs (ifany) currently stored at the spooling server 50 for that specificprinter polling device 100, or for a particular PIN number (or otheridentifier) entered via the printer polling device 100 or other device.As discussed elsewhere herein, the list of print jobs may be accessedvia various other devices capable of communicating with the spoolingserver 50.

It will now be appreciated that the present invention provides improvedmethods and apparatus for receiving, storing, and forwarding print jobsover a communications network in a secure manner without the need tospecify the print destination. By using a printer polling device, thedisadvantages of prior art push data flow techniques are overcome.Instead of having a remote device initiate contact with a print stationbehind a firewall, the present invention provides a spooling server thatreceives polling requests from a printer polling device to determine ifthere are any documents to be printed by a printer associated with theprinter polling device. Compatibility with all types of printers is alsoprovided.

Although the invention has been described in connection with preferredembodiments thereof, those skilled in the art will appreciate thatnumerous adaptations and modifications may be made thereto withoutdeparting from the scope of the invention, as set forth in the followingclaims.

1. A network printing method comprising: forwarding a print job to aspooling server; initiating the print job at the spooling server forprinting a document at a designated printer; automatically sending tothe spooling server a polling request for any initiated print jobs froma printer polling device associated with the designated printer; andforwarding the requested initiated print job from the spooling server tothe printer polling device in response to the polling request.
 2. Themethod of claim 1, wherein forwarding comprises forwarding the print jobto the spooling server without a predetermined print destination.
 3. Themethod of claim 1, wherein the printer polling device periodically pollsthe spooling server to identify print jobs associated with the printerpolling device.
 4. The method of claim 1, wherein the network comprisesat least one of a local area network, a wide area network, a globalnetwork, and the Internet.
 5. The method of claim 1, wherein: theprinter polling device is located within a gateway firewall; and thespooling server is located outside the gateway firewall.
 6. The methodof claim 5, wherein forwarding comprises forwarding the print job to thespooling server without requiring reconfiguration of the gatewayfirewall.
 7. The method of claim 1, wherein: a print job source islocated at and in communication with a first local area network andforwards the print job to the spooling server; the printer pollingdevice is located at and in communication with a second local areanetwork; and the spooling server is located outside of the first andsecond local area networks.
 8. The method of claim 7, wherein: the printjob source communicates with the spooling server via a first gatewayfirewall which controls access to the first local area network; and theprinter polling device communicates with the spooling server via asecond gateway firewall which controls access to the second local areanetwork.
 9. The method of claim 1, further comprising designating arecipients of the print job, wherein the print job can only be printedby the designated recipient.
 10. The method of claim 1, wherein a printjob source is one of a computer, a personal digital assistant device, anInternet appliance, a facsimile machine, a scanner, a telephone, or adedicated terminal.
 11. A spooling server for network printing, theapparatus comprising: a receiver for receiving a print job at thespooling server; a processor for initiating the print job for printing adocument at a designated printing device; a transmitter for forwardingthe initiated print job from the spooling server to a printer pollingdevice associated with the designated printer in response to a pollingrequest for any initiated print jobs at the spooling server from theprinter polling device, the polling request being automaticallyforwarded from the printer polling device to the spooling server. 12.The spooling server of claim 11, wherein the print job is forwarded tothe spooling server without a pre-determined print destination.
 13. Thespooling server of claim 11, wherein the printer polling deviceperiodically polls the spooling server to identify print jobs associatedwith the printer polling device.
 14. The spooling server of claim 11,wherein the network comprises at least one of a local area network, awide area network, a global network, and the Internet.
 15. The spoolingserver of claim 11, wherein: the printer polling device is locatedwithin a gateway firewall; and the spooling server is located outsidethe gateway firewall.
 16. The spooling server of claim 15, wherein theprint job is forwarded to the spooling server such that reconfigurationof the gateway firewall is not required.
 17. The spooling server ofclaim 11, wherein: a print job source is located at and in communicationwith a first local area network and forwards the print job to thespooling server; the printer polling device is located at and incommunication with a second local area network; and the spooling serveris located outside of the first and second local area networks.
 18. Thespooling server of claim 17, wherein: the print job source communicateswith the spooling server via a first gateway firewall which controlsaccess to the first local area network; and the printer polling devicecommunicates with the spooling server via a second gateway firewallwhich controls access to the second local area network.
 19. The spoolingserver of claim 11, wherein: one or more recipients of the print job aredesignated, wherein the print job can only be printed by the designatedone or more recipients.
 20. The spooling server of claim 11, wherein aprint job source is one of a computer, a personal digital assistantdevice, an Internet appliance, a facsimile machine, a scanner, atelephone, or a dedicated terminal.